﻿using Seg.Entidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Seg.Datos
{
    public class ParametroDatos
    {
        BD_SEGEntities context = new BD_SEGEntities();

        public List<PARAMETRO> ListarTipoTabla()
        {
            var datos = context.PARAMETRO
                        .Where(x =>  x.para_icodigo_registro==0)
                        .OrderBy(x => x.para_vnombre_parametro)
                        .ToList();
            return datos;
        }
        public List<PARAMETRO> Listar(decimal idTabla)
        {
            var datos = context.PARAMETRO.Where(
                x => ( x.para_icodigo_registro!=0 &&
                        ((idTabla==0) ||( idTabla!=0 && x.para_icodigo_tabla == idTabla) )
                    )
                ).ToList();
            return datos;
        }
        public int Insertar(PARAMETRO entidad)
        {
            try
            {
                entidad.para_icodigo_parametro = GenerarCodigo();
                context.PARAMETRO.Add(entidad);
                context.SaveChanges();
                return 1;
            }
            catch (Exception ex)
            {
                return 0;
            }
        }
        public int Actualizar(PARAMETRO entidad)
        {
            var objUpd = context.PARAMETRO.Where(x => x.para_icodigo_parametro == entidad.para_icodigo_parametro).FirstOrDefault();
            objUpd.para_icodigo_tabla = entidad.para_icodigo_tabla;
            objUpd.para_icodigo_registro = entidad.para_icodigo_registro;
            objUpd.para_vnombre_parametro = entidad.para_vnombre_parametro;
            objUpd.para_dvalor_numerico = entidad.para_dvalor_numerico;
            objUpd.para_vvalor_texto = entidad.para_vvalor_texto;
            objUpd.para_cflag_modificar = entidad.para_cflag_modificar;
            objUpd.para_cflag_eliminar = entidad.para_cflag_eliminar;
            objUpd.para_iusuario_modifica = entidad.para_iusuario_modifica;
            context.SaveChanges();
            return 1;
        }
        public int Eliminar(int id)
        {
            var objUpd = context.PARAMETRO.Where(x => x.para_icodigo_parametro == id).FirstOrDefault();
            context.PARAMETRO.Remove(objUpd);
            var r = context.SaveChanges();
            return r;
        }
        int GenerarCodigo()
        {
            //var actual = context.PARAMETRO.Count();
            var actual = (from p in context.PARAMETRO
                            select p.para_icodigo_parametro).Max();
            return actual + 1;
        }
        public PARAMETRO ObtenerParametro(decimal id)
        {
            var datos = context.PARAMETRO.Where(x => x.para_icodigo_parametro == id).FirstOrDefault();
            return datos;
        }
        public List<PARAMETRO> ObtenerTabla(int idTabla)
        {
            var datos = context.PARAMETRO.Where(x =>
                (x.para_icodigo_tabla == idTabla)
                && (x.para_icodigo_registro != 0)).ToList();
            return datos;
        }
        public PARAMETRO ObtenerRegistro(int idTabla,int idRegistro)
        {
            var datos = context.PARAMETRO.Where(x =>
                ((x.para_icodigo_tabla == idTabla)
                && (x.para_icodigo_registro == idRegistro))
            ).FirstOrDefault();
            return datos;
        }
    }
}
